使用mosdns进行国内外分流解析与广告过滤 – 牛牛数码驿站 您所在的位置:网站首页 mosdns smartdns 使用mosdns进行国内外分流解析与广告过滤 – 牛牛数码驿站

使用mosdns进行国内外分流解析与广告过滤 – 牛牛数码驿站

#使用mosdns进行国内外分流解析与广告过滤 – 牛牛数码驿站| 来源: 网络整理| 查看: 265

使用mosdns进行国内外分流解析与广告过滤

张贴在 2022 年 6 月 14 日

DNS解析方式

原文链接:https://rxclc.top/index.php/archives/11/

 

请注意,本文编写于 234 天前,最后修改于 15 天前,其中某些信息可能已经过时。

 

点击加入Telegram交流群组

本文主要介绍的是Docker使用mosdns的方法

 

 

如果需要直接在OpenWrt上使用可以参考 mosdns的Wiki 或者在编译固件时将openwrt-mos编译进去.

 

准备工作

 

配置文件使用的是根据openwrt-mos以及mosdns的wiki中的推荐配置,做了一点小改动,大家可以参考mosdns的Wiki自行修改。如果是不习惯使用openwrt-mos的默认配置或者默认配置存在一些问题也可以尝试使用下面的配置。

 

前往这里下载MOSDNS需要的路由规则文件,geoip.dat和geosite.dat 本地创建一个名为config.yaml的配置文件,并复制下方配置到config.yaml文件 2022年3月24日 配置更新,#阿里的pipeline有时会出问题,等以后稳定了再启用吧。

 

log: level: info file: '' plugin: ################# 服务器插件 ################ - tag: main_server # 服务器插件。(一个正常工作的 DNS 软件必需要一个服务器插件接收客户端的请求。) type: server args: entry: # 这里设定收到的请求会经过哪些插件(被哪些插件处理)。 - _no_ecs - _single_flight - main_sequence # 运行主执行序列 server: # 监听以下协议和端口 - protocol: udp addr: '[::]:5335' - protocol: tcp addr: '[::]:5335' ################# 可执行插件 ################ # 主执行序列。包含分流的逻辑的插件。 # 当然这些逻辑直接写在 `server` 的 entry 也没问题。这里只是 `sequence` 插件的示例。让配置看起来更干净。 - tag: main_sequence type: sequence args: exec: - if: - query_is_ad_domain # 已知的广告域名 exec: - _block_with_nxdomain # 生成 NXDOMAIN 应答 - _return # 返回。不再执行后续插件。 - mem_cache # 运行缓存插件。放在这里就可以避免缓存到无用的广告域名。 - if: - query_is_local_domain # 已知的本地域名 - '!_query_is_common' # 和不常见的请求类型 exec: - forward_local # 用本地服务器获取应答 - _return - if: - query_is_non_local_domain # 已知的非本地域名 exec: - _prefer_ipv4 # 优先 IPv4 - forward_remote # 用远程服务器获取应答 - _return # 剩下的未知域名用 IP 分流。原理类似 ChinaDNS,但更稳定。 # 详细分流原理请参考 `fallback` 的工作流程。 - primary: - forward_local # 本地服务器获取应答。 - if: - '!response_has_local_ip' # 应答包含非本地 IP。 exec: - _drop_response # 丢掉。 secondary: - _prefer_ipv4 - forward_remote fast_fallback: 150 # 这里建议设置成 local 服务器正常延时的 2~5 倍。 # 这个延时保证了 local 延时偶尔变高时,其结果不会被 remote 抢答。 # 如果 local 超过这个延时还没响应,可以假设 local 出现了问题。 # 这时用就采用 remote 的应答。单位: 毫秒。 always_standby: true # 缓存 - tag: 'mem_cache' type: 'cache' args: size: 1024 lazy_cache_ttl: 17200 # 转发请求至本地服务器的插件 - tag: forward_local type: fast_forward args: upstream: - addr: tcp://223.5.5.5 #阿里的pipeline有时会出问题,等以后稳定了再启用吧 #enable_pipeline: true - addr: tcp://119.29.29.29 # 转发请求至远程服务器的插件 - tag: forward_remote type: fast_forward args: upstream: - addr: tcp://208.67.222.222 enable_pipeline: true - addr: tcp://1.1.1.1 enable_pipeline: true ################ 匹配器插件 ################# # 匹配本地域名的插件 - tag: query_is_local_domain type: query_matcher args: domain: - 'ext:./geosite.dat:cn' # 匹配非本地域名的插件 - tag: query_is_non_local_domain type: query_matcher args: domain: - 'ext:./geosite.dat:geolocation-!cn' # 匹配广告域名的插件 - tag: query_is_ad_domain type: query_matcher args: domain: - 'ext:./geosite.dat:category-ads-all' # 匹配本地 IP 的插件 - tag: response_has_local_ip type: response_matcher args: ip: - 'ext:./geoip.dat:cn' Docker使用mosdns

先拉取mosdns的镜像

docker pull irinesistiana/mosdns

然后创建mosdns对应的文件夹,再把config.yaml/geoip.dat/geosite.dat三个文件上传到/etc/mosdns下.

mkdir /etc/mosdns

 

这时我们需要关闭掉SSRP/HelloWorld等科学上网插件!因为mosdns需要监听5335端口,SSRP/HelloWorld默认的PDNSD会使用5335端口

 

运行以下命令即可启用mosdns

docker run -d \ --name mosdns \ --net=host \ -v /etc/mosdns:/etc/mosdns \ --restart=always \ irinesistiana/mosdns:latest 使用

安装完成之后我们需要对OpenWrt进行一些简单的配置

网络 – DHCP/DNS – 基本设置 – DNS转发设置为127.0.0.1#5335 网络 – DHCP/DNS – HOSTS和解析文件 – 勾选忽略解析文件 网络 – DHCP/DNS – 高级设置 – DNS 查询缓存的大小设置为0

最后只需简单设置一下SSRP/Passwall/HelloWorld就完成了。

以SSRP/HelloWorld为例,只要把DNS解析方式使用本机端口为5335的DNS服务 Passwall的话可以使用不过滤模式,如果需要分流可以用自定义DNS,同样的端口需要设置为5335

还需要注意的一点是,不要忘记把国内DNS和国外DNS分别加入直连和代理列表中。

不走代理的 WAN IP 强制走代理的 WAN IP 不走代理的域名 强制走代理的域名 223.6.6.6 162.14.21.178 配置文件由DOT/DOH换成TCP53了,所以更新一下 119.29.29.29 223.5.5.5

 

DNS解析方式

自动更新geosite和geoip

 

2022年2月28日 更新一个自动更新geosite和geoip的小脚本,就几行很简单。

直接在命令行输入下面的内容就行, 之后一定记得要加执行权限, 最后去设置一个定时任务即可。

 

cat > /root/auto_update_geoxx.sh


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有